#include <stdio.h>
// 前话
// vscode可能是追求轻量化的缘故，直接用extern不能调用另一个文件的变量，具体解决办法上网搜
// 但是visual studio可以，应该是这软件集成比较完整。

//static能修饰局部变量、全局变量、函数

// 解释一下第二个“全局变量”，本来在一个文件里声明了一个全局变量a
// 在另一个cpp文件里可以用extern调用的
// 但是如果给a加上 static int a后，别的文件就不能用extern int a调用了，该变量被局限在单个cpp文件
// 也就是a被放到了静态存储区
// 函数那个也是同理，可以用extern调用另一个cpp文件的函数，但是加了static就不能调用了，变成了静态函数

void text(){
    static int a = 1;  // 不加static，输出十个2，static的作用是让局部变量出了作用域不被销毁
    a++;               // 本质上，static修饰局部变量的时候，改变了变量的存储位置，从栈区改变到了静态存储区
    // 栈区存放的局部变量，出了函数就销毁了
    // 而静态存储区的生命周期=程序的生命周期
    printf("%d\n",a);

}

int main(){
    int i = 0;
    while(i<10){
        text();
        i++;
    }
    return 0;
}